#!/usr/bin/ruby

# -------------------------------------------------------------------------- #
# Copyright 2002-2023, OpenNebula Project, OpenNebula Systems                #
#                                                                            #
# Licensed under the Apache License, Version 2.0 (the "License"); you may    #
# not use this file except in compliance with the License. You may obtain    #
# a copy of the License at                                                   #
#                                                                            #
# http://www.apache.org/licenses/LICENSE-2.0                                 #
#                                                                            #
# Unless required by applicable law or agreed to in writing, software        #
# distributed under the License is distributed on an "AS IS" BASIS,          #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
# See the License for the specific language governing permissions and        #
# limitations under the License.                                             #
#--------------------------------------------------------------------------- #

$LOAD_PATH.unshift File.dirname(__FILE__)

require 'microvm'

require_relative '../../scripts_common'

# ------------------------------------------------------------------------------
# Action Arguments, STDIN includes XML description of the OpenNebula VM
# ------------------------------------------------------------------------------

vm_id = ARGV[2]

xml = STDIN.read

# TODO, check if microVM already exists

microvm = MicroVM.new_from_xml(xml, nil)

# Clean in case the microVM was shutdown from inside
microvm.clean

# Create microVM
rc = microvm.create

if !rc
    STDERR.puts 'There was an error deploying the microVM. Check oned.log.'
    microvm.clean(false)

    exit(-1)
end

# Make sure process have started
rc = microvm.wait_deploy

if !rc
    STDERR.puts 'MicroVM process did not start.'
    microvm.clean(false)

    exit(-1)
end

# Start VNC (only started if necessary)
microvm.vnc('start')

# Set deploy_id
puts "one-#{vm_id}"
